Message Flattener
Flattening nested JSON refers to the process of transforming a nested JSON data structure into a flat data structure, where all the nested objects and arrays are transformed into a single level of key-value pairs.
Input message
A simplified input message could be similar to this:
{
"DevEUI_uplink": {
"Time": "2021-12-01T00:00:11.013+01:00",
"DevEUI": "402C765000000074",
"FPort": 2,
"FCntUp": 53,
"ADRbit": 1,
"MType": 4,
"FCntDn": 54,
"payload_hex": "02300040a0",
"mic_hex": "61fa24cf",
"Lrcid": "00000127",
"LrrRSSI": -83,
"LrrSNR": 9.5,
"SpFact": 7,
"SubBand": "G0",
"Channel": "LC1",
"DevLrrCnt": 2,
"Lrrid": "3C200E92",
"Late": 0,
"LrrLAT": 48.933865,
"LrrLON": 1.195898,
"Lrrs": {
"Lrr": [
{
"Lrrid": "3C200E92",
"Chain": 0,
"LrrRSSI": -83,
"LrrSNR": 9.5,
"LrrESP": -83.461838
},
{
"Lrrid": "1000027C",
"Chain": 0,
"LrrRSSI": -89,
"LrrSNR": 6.75,
"LrrESP": -89.832695
}
]
},
"CustomerID": "100133870",
"CustomerData": {
"alr": {
"pro": "LORA/Generic",
"ver": "1"
},
"tags": [
"site=Paris",
"location = Kitchen office",
"=",
"Hell=",
"=125",
"Hello World"
]
},
"ModelCfg": "1:TWA_100133870.15409.AS",
"DriverCfg": {
"mod": {
"pId": "baumer",
"mId": "wep5",
"ver": "1"
},
"app": {
"pId": "baumer",
"mId": "wep5",
"ver": "1"
},
"id": "custom:baumer-wep:1"
},
"InstantPER": 0,
"MeanPER": 0,
"DevAddr": "04D2848E",
"AckRequested": 1,
"rawMacCommands": "",
"TxPower": 2,
"NbTrans": 1,
"Frequency": 868.1,
"DynamicClass": "A",
"payload": {
"type": "pressure",
"decoder_version": "BAUMER_GEN1_V103",
"battery": {
"type": "tension",
"value": 3.6,
"unit": "V",
"error": 0
},
"measure": {
"value1": {
"name": "pressure1",
"type": "pressure",
"value": 0.004,
"unit": "bar Rel",
"error": 0
}
},
"specific_info": {
"pressureUnit": "bar Rel",
"temperature": 23,
"temperatureError": 0,
"pressure": 0.004,
"pressureError": 0,
"errorCode": "00",
"alarmLowerThreshold": "0",
"alarmUpperThreshold": "0",
"alarmNegativeTrend": "0",
"alarmPositiveTrend": "0"
},
"diagnostic": {
"failure_status": 0,
"battery_level": 3.6,
"temp_electronic_board": 23
},
"debug": {
"debug_unit_code": 0,
"debug_etendu": 4,
"debug_pressurePercent": 0.1,
"debug_payload": [
2,
48,
0,
64,
160
]
}
}
}
}
Output message
The output of the processor is:
{
"Time": "2021-12-01T00:00:11.013+01:00",
"DevEUI": "402C765000000074",
"FPort": 2,
"FCntUp": 53,
"ADRbit": 1,
"MType": 4,
"FCntDn": 54,
"payload_hex": "02300040a0",
"mic_hex": "61fa24cf",
"Lrcid": "00000127",
"LrrRSSI": -83,
"LrrSNR": 9.5,
"SpFact": 7,
"SubBand": "G0",
"Channel": "LC1",
"DevLrrCnt": 2,
"Lrrid": "3C200E92",
"Late": 0,
"LrrLAT": 48.933865,
"LrrLON": 1.195898,
"Lrrs.Lrr[0].Lrrid": "3C200E92",
"Lrrs.Lrr[0].Chain": 0,
"Lrrs.Lrr[0].LrrRSSI": -83,
"Lrrs.Lrr[0].LrrSNR": 9.5,
"Lrrs.Lrr[0].LrrESP": -83.461838,
"Lrrs.Lrr[1].Lrrid": "1000027C",
"Lrrs.Lrr[1].Chain": 0,
"Lrrs.Lrr[1].LrrRSSI": -89,
"Lrrs.Lrr[1].LrrSNR": 6.75,
"Lrrs.Lrr[1].LrrESP": -89.832695,
"CustomerID": "100133870",
"CustomerData.alr.pro": "LORA/Generic",
"CustomerData.alr.ver": "1",
"CustomerData.tags[0]": "site=Paris",
"CustomerData.tags[1]": "location = Kitchen office",
"CustomerData.tags[2]": "=",
"CustomerData.tags[3]": "Hell=",
"CustomerData.tags[4]": "=125",
"CustomerData.tags[5]": "Hello World",
"ModelCfg": "1:TWA_100133870.15409.AS",
"DriverCfg.mod.pId": "baumer",
"DriverCfg.mod.mId": "wep5",
"DriverCfg.mod.ver": "1",
"DriverCfg.app.pId": "baumer",
"DriverCfg.app.mId": "wep5",
"DriverCfg.app.ver": "1",
"DriverCfg.id": "custom:baumer-wep:1",
"InstantPER": 0,
"MeanPER": 0,
"DevAddr": "04D2848E",
"AckRequested": 1,
"rawMacCommands": "",
"TxPower": 2,
"NbTrans": 1,
"Frequency": 868.1,
"DynamicClass": "A",
"payload.type": "pressure",
"payload.decoder_version": "BAUMER_GEN1_V103",
"payload.battery.type": "tension",
"payload.battery.value": 3.6,
"payload.battery.unit": "V",
"payload.battery.error": 0,
"payload.measure.value1.name": "pressure1",
"payload.measure.value1.type": "pressure",
"payload.measure.value1.value": 0.004,
"payload.measure.value1.unit": "bar Rel",
"payload.measure.value1.error": 0,
"payload.specific_info.pressureUnit": "bar Rel",
"payload.specific_info.temperature": 23,
"payload.specific_info.temperatureError": 0,
"payload.specific_info.pressure": 0.004,
"payload.specific_info.pressureError": 0,
"payload.specific_info.errorCode": "00",
"payload.specific_info.alarmLowerThreshold": "0",
"payload.specific_info.alarmUpperThreshold": "0",
"payload.specific_info.alarmNegativeTrend": "0",
"payload.specific_info.alarmPositiveTrend": "0",
"payload.diagnostic.failure_status": 0,
"payload.diagnostic.battery_level": 3.6,
"payload.diagnostic.temp_electronic_board": 23,
"payload.debug.debug_unit_code": 0,
"payload.debug.debug_etendu": 4,
"payload.debug.debug_pressurePercent": 0.1,
"payload.debug.debug_payload[0]": 2,
"payload.debug.debug_payload[1]": 48,
"payload.debug.debug_payload[2]": 0,
"payload.debug.debug_payload[3]": 64,
"payload.debug.debug_payload[4]": 160,
"messageType": "DevEUI_uplink"
}